Java匿名内部类与Lambda表达式

您所在的位置:网站首页 java lambda表达式与匿名内部类的联系和区别 Java匿名内部类与Lambda表达式

Java匿名内部类与Lambda表达式

2024-07-16 00:01| 来源: 网络整理| 查看: 265

       匿名内部类

       匿名内部类的作用是提供便捷的接口实现。在一些情况下,方法会使用接口作为参数,此时通过创建类并实现接口进行参数的传递。但是,有时候该类只需创建一次,如果用传统的创建类并实现接口的方法过于繁琐,因此用匿名类可以用匿名内部类实现。

        例如,Arrays.sort()中,重写比较器,就可以通过匿名内部类来实现。

public class Test { public static void main(String[] args) { Integer[] nums = new Integer[]{1, 2, 3, 4, 5, 6}; //重写Comparator类中的compare方法 Cmp cmp = new Cmp(); Arrays.sort(nums, cmp); System.out.println(Arrays.toString(nums)); } static class Cmp implements Comparator { @Override public int compare(Integer o1, Integer o2) { return o2 - o1; } } }

         在未使用匿名内部类的情况下,需要创建新的类。

public class Test { public static void main(String[] args) { Integer[] nums = new Integer[]{1, 2, 3, 4, 5, 6}; //重写Comparator类中的compare方法 Arrays.sort(nums,new Comparator(){ //匿名内部类 @Override public int compare(Integer o1, Integer o2) { return o2-o1; } }); System.out.println(Arrays.toString(nums)); } }

         当使用匿名内部类后就无需再创建类,大大简化了代码。 

Lambda表达式

         Lambda表达式为接口中抽象方法的实现,其作用是简化匿名内部类实现代码作为方法接口实现参数的传递。

         Lambda表达式语法

()->{} 或者 (参数)->{}

        例如,在Arrays.sort()中

public class Test { public static void main(String[] args) { Integer[] nums = new Integer[]{1, 2, 3, 4, 5, 6}; //Lambda表达式重写Comparator类中的compare方法 Arrays.sort(nums, ((o1, o2) -> (o2 - o1))); System.out.println(Arrays.toString(nums)); } }

     Lambda表达式也有局限性,对于一个类中有多个抽象方法时,就不能使用Lambda表达式。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3